package com.itheima.config;

public interface CreateSonByCGLib {

    /**
     * 主进程,传入子类和父类class对象,传出一个可测试的子类对象
     *
     * @param sonClass
     * @return Object
     */
    public Object createTestSonObject(Class sonClass);

    /**
     * 用户自定义方法和放回值
     *
     * @return boolean 方法注入成功返回true,否则回返回false
     */
    public <T> boolean setCustomDefinedMethodAndReturnValue(Class sonClass ,String methodName,T returnValue);

    /**
     * 初衷是:由于反射无法获取从父类继承的重写的方法,
     * (查看jdk官方api文档,发现无法获取重写的方法),
     * 所以需要用户自己存入重写的方法的方法名,以免被覆盖
     * 但后来想想可以用于注入用户想保留的所有子类继承父类的方法,就改下名字吧
     * @param inputOverrideOrFatherMethodname 输入重写方法名
     * @return boolean true表示添加成功,flase表示添加失败
     */
    public boolean inputOverrideOrFatherMethodname(String inputOverrideOrFatherMethodname);
}
